/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.modelo.beans;

import com.ipartek.formacion.gestformwww.controlador.Verificador;
import java.util.ResourceBundle;

/**
 *
 * @author ALvaro y David
 */
public class FiltroAlumno {
    ResourceBundle bundle;
    String NIF;
    String nombre;
    String primerape;
    String segundoape;
    String tlfn1;
    String tlfn2;
    String matricula;
    String columnafiltrar;
    String orden;
    Integer curId;
    boolean nocurso;
    Integer pagsiguiente;
    Integer elementospag;

    public Integer getElementospag() {
        return elementospag;
    }

    public void setElementospag(Integer elementospag){
        this.elementospag = elementospag;
    }

    public void setElementospag(String elementospag){
        if(Verificador.numeroValido(elementospag)){
            this.elementospag = Integer.parseInt(elementospag);
        }
    }

    public void setPagsiguiente(String pagsiguiente) {
        if (Verificador.numeroValido(pagsiguiente)) {
            this.pagsiguiente = Integer.parseInt(pagsiguiente);
        } else {
            this.pagsiguiente = 1;
        }
    }

    public Integer getPagsiguiente() {
        return pagsiguiente;
    }

    public void setPagsiguiente(Integer pagsiguiente) {
        this.pagsiguiente = pagsiguiente;
    }



    public FiltroAlumno(ResourceBundle bundle) {
        
        this.nocurso=false;
        this.pagsiguiente=1;
        this.elementospag=Integer.parseInt(bundle.getString("numRegPagCursos"));
        this.bundle=bundle;

    }

    public Integer getCurId() {
        return curId;
    }

    public void setCurId(Integer curId) {
        this.curId = curId;
    }


    public FiltroAlumno(ResourceBundle bundle, String NIF, String nombre, String primerape, String segundoape, String tlfn1, String tlfn2, String matricula, String columnafiltrar, String orden, Integer curId, Integer pagsiguiente, Integer elementospag) {
        this.bundle = bundle;
        this.NIF = NIF;
        this.nombre = nombre;
        this.primerape = primerape;
        this.segundoape = segundoape;
        this.tlfn1 = tlfn1;
        this.tlfn2 = tlfn2;
        this.matricula = matricula;
        this.columnafiltrar = columnafiltrar;
        this.orden = orden;
        this.curId=curId;
        this.nocurso=false;
        this.pagsiguiente = pagsiguiente;
        this.elementospag = elementospag;
    }

    

    public boolean isNocurso() {
        return nocurso;
    }

    public void setNocurso(boolean nocurso) {
        this.nocurso = nocurso;
    }

    public String getNIF() {
        return NIF;
    }

    public void setNIF(String NIF) {
        if (Verificador.caracteresCorrectos(NIF)) {
            if (NIF != null) {
                this.NIF = NIF;
            }
        } else {
            this.NIF = null;
        }
        
    }

    public ResourceBundle getBundle() {
        return bundle;
    }

    public void setBundle(ResourceBundle bundle) {
        this.bundle = bundle;
    }

    public String getColumnafiltrar() {
        return columnafiltrar;
    }

    public void setColumnafiltrar(String columnafiltrar) {
        this.columnafiltrar = columnafiltrar;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        if (Verificador.caracteresCorrectos(nombre)) {
            if (nombre != null) {
                this.nombre = nombre;
            }
        } else {
            this.nombre = null;
        }
        
    }

    public String getOrden() {
        return orden;
    }

    public void setOrden(String orden) {
        if (Verificador.caracteresCorrectos(orden)) {
            if (orden != null) {
                this.orden = orden;
            }
        } else {
            this.orden = null;
        }
    }

    public String getPrimerape() {
        return primerape;
    }

    public void setPrimerape(String primerape) {
        if (Verificador.caracteresCorrectos(primerape)) {
            if (primerape!= null) {
                this.primerape = primerape;
            }
        } else {
            this.primerape = null;
        }
       
    }

    public String getSegundoape() {
        return segundoape;
    }

    public void setSegundoape(String segundoape){
        if (Verificador.caracteresCorrectos(segundoape)) {
            if (segundoape != null) {
                this.segundoape = segundoape;
            }
        } else {
            this.segundoape = null;
        }
    }

    public String getTlfn1() {
        return tlfn1;
    }

    public void setTlfn1(String tlfn1) {
        this.tlfn1 = tlfn1;
    }

    public String getTlfn2() {
        return tlfn2;
    }

    public void setTlfn2(String tlfn2) {
        this.tlfn2 = tlfn2;
    }

    public String getSQL(){
        String sql="";
        String filtro="ORDER BY alumno.AluNom";
        String and="";
        String where=" WHERE ";

        if(columnafiltrar!=null && !columnafiltrar.trim().equals("")){
            String columna=bundle.getString(columnafiltrar);
            if (columna!=null && !columna.trim().equals("")){
                filtro= "ORDER BY "+columna;
                if(orden!=null && !orden.trim().equals("")){
                    if (orden.trim().equals("ASC") || orden.trim().equals("DESC")){
                        filtro = filtro + " " + orden;
                    }
                }
            }
        }

        if (curId==null || curId<=0){
            // Muestra todos los alumnos
            //sql="SELECT AluId, AluNIF, AluNSS, AluTlf1, AluTlf2, AluMail, AluDir, AluLocalidad, AluFechNac, AluNom, AluApe1, AluApe2, AluObserv, EmpId, ProId, ROW_NUMBER() OVER (" + filtro + ") AS RowNum FROM alumno";
             sql="SELECT AluId, AluNIF, AluNSS, AluTlf1, AluTlf2, AluMail, AluDir, AluLocalidad, AluFechNac, AluNom, AluApe1, AluApe2, AluObserv, EmpId, ProId FROM alumno";
        }else{
            if(nocurso==false){
                // Muestra los alumnos de un curso concreto informado en el filtro.
                sql="SELECT alumno.AluId, alumno.AluNIF, alumno.AluNSS, alumno.AluTlf1, alumno.AluTlf2, alumno.AluMail, alumno.AluDir, alumno.AluLocalidad, alumno.AluFechNac, alumno.AluNom, alumno.AluApe1, alumno.AluApe2, alumno.AluObserv, alumno.EmpId, alumno.ProId FROM alumno LEFT JOIN alumcurso ON alumno.AluId=alumcurso.AluId WHERE alumcurso.CurId="+curId;
            }else{
                  // Muestra los alumnos que no están en el curso concreto informado en el filtro.
               // sql="SELECT AluId, AluNIF, AluNSS, AluTlf1, AluTlf2, AluMail, AluDir, AluLocalidad, AluFechNac, AluNom, AluApe1, AluApe2, AluObserv, EmpId, ProId, ROW_NUMBER() OVER (" + filtro + ") AS RowNum FROM alumno WHERE AluId not in(SELECT alumno.AluId FROM alumno LEFT JOIN alumcurso ON alumno.AluId=alumcurso.AluId WHERE alumcurso.CurId="+curId+")";
                 sql="SELECT AluId, AluNIF, AluNSS, AluTlf1, AluTlf2, AluMail, AluDir, AluLocalidad, AluFechNac, AluNom, AluApe1, AluApe2, AluObserv, EmpId, ProId FROM alumno WHERE AluId not in(SELECT alumno.AluId FROM alumno LEFT JOIN alumcurso ON alumno.AluId=alumcurso.AluId WHERE alumcurso.CurId="+curId+")";
            }
            and = " AND ";
            where = "";
        }
        if (nombre!=null && !nombre.trim().isEmpty()){
            sql = sql + where + and + "alumno.AluNom LIKE '%" + nombre + "%'";
            and = " AND ";
            where = "";
        }
        if (primerape!=null && !primerape.trim().isEmpty()){
            sql = sql + where + and + "alumno.AluApe1 LIKE '%" + primerape + "%'";
            and = " AND ";
            where = "";
        }
        if (segundoape!=null && !segundoape.trim().isEmpty()){
            sql = sql + where + and + "alumno.AluApe2 LIKE '%" + segundoape + "%'";
            and = " AND ";
            where = "";
        }
        if (NIF!=null && !NIF.trim().isEmpty()){
            sql = sql + where + and + "alumno.AluNif LIKE '%" + NIF + "%'";
            and = " AND ";
            where = "";
        }
        sql = sql + " " + filtro;
        return sql;
    }

    /*Solo sirve en sqlserver2005
    public String getSQLPag(){
        int primerelemento = (this.getPagsiguiente() - 1) * this.getElementospag() + 1;
        int ultimoelemento = this.getPagsiguiente() * this.getElementospag();
        String sql = "SELECT AluId, AluNIF, AluNSS, AluTlf1, AluTlf2, AluMail, AluDir, AluLocalidad, AluFechNac, AluNom, AluApe1, AluApe2, AluObserv, EmpId, ProId FROM (" + this.getSQL() + ") AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN " + primerelemento + " AND " + ultimoelemento;
        return sql;
    }*/

    /**
     * Obtiene el primer elemento para la paginación
     * @return
     */
    public int getPrimerElemento (){
        int primerelemento = (this.getPagsiguiente() - 1) * this.getElementospag() + 1;
        return primerelemento;
    }

    /**
     * Obtiene el último elemento para la paginación
     * @return
     */
    public int getUltimoElemento (){
        int ultimoelemento = this.getPagsiguiente() * this.getElementospag();
        return ultimoelemento;
    }
}
